package common.exception.code;

/**
 * @enumName: ThirdPartyApiErrorCode
 * @description: 第三方API（应用程序接口）中使用的错误码，统一全局API错误码
 * @author: lanyukai
 * @date: 2024/6/5 16:58
 * @since 1.0
 **/
public enum ThirdPartyApiErrorCode implements IErrorCode{
    /**
     * 请求参数错误
     */
    REQUEST_PARAM_INCORRECT("A400", "前端请求参数"),
    /**
     * 身份不符或未授权
     */
    AUTHORIZATION_NOT_FOUND("A401","身份不符或未授权"),
    /**
     * 没有通过身份验证
     */
    ACCESS_NOT_PASS("A402","没有通过身份验证"),
    /**
     * 请求频率过高
     */
    REQUEST_FREQUENCY_TOO_FAST("A403", "请求频率过高"),
    /**
     * API请求的资源没有找到
     */
    RESOURCE_NOT_FOUND("A403","API请求的资源没有找到"),
    UNDEFINED("A000", "未定义");

    /**
     *  错误码
     */
    private String code;
    /**
     *  消息
     */
    private String message;

    ThirdPartyApiErrorCode(String code, String message) {
        this.code = code;
        this.message = message;
    }
    /**
     * 依据错误码取得消息
     * @param: code 错误码
     * @return: 错误信息
     */
    public  String msg(String code) {
        return  ThirdPartyApiErrorCode.valueOfcode(code).message;
    }
    /**
     * 根据code返回枚举对象
     * @param code 错误码
     * @return 枚举对象
     */
    public static ThirdPartyApiErrorCode valueOfcode(String code){
        for (ThirdPartyApiErrorCode errorCode : ThirdPartyApiErrorCode.values()) {
            if (errorCode.getCode().equals(code)) {
                return errorCode;
            }
        }
        return UNDEFINED;
    }

    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getMessage() {
        return message;
    }
}
